package structs

import (
	"time"
)

type AdminMenu struct {
	Id       int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	ParentId int    `json:"parent_id" xorm:"INT(11)"`
	Title    string `json:"title" xorm:"VARCHAR(24)"`
	Url      string `json:"url" xorm:"VARCHAR(45)"`
	Icon     string `json:"icon" xorm:"VARCHAR(45)"`
	Enabled  string `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	Top      int    `json:"top" xorm:"default 0 INT(11)"`
	IsAdmin  string `json:"is_admin" xorm:"default '0' ENUM('0','1')"`
}

type Coin struct {
	Id                   int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Name                 string    `json:"name" xorm:"index VARCHAR(64)"`
	FullName             string    `json:"full_name" xorm:"VARCHAR(64)"`
	Author               string    `json:"author" xorm:"not null default '' VARCHAR(64)"`
	Desc                 string    `json:"desc" xorm:"not null TEXT"`
	Display              string    `json:"display" xorm:"VARCHAR(64)"`
	Status               int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	Url                  string    `json:"url" xorm:"VARCHAR(255)"`
	BlockUrl             string    `json:"block_url" xorm:"VARCHAR(255)"`
	WhiteBook            string    `json:"white_book" xorm:"not null default '' VARCHAR(255)"`
	PublishAmount        string    `json:"publish_amount" xorm:"DECIMAL(20,8)"`
	ExchangeOutMin       string    `json:"exchange_out_min" xorm:"not null default 0.00000000 DECIMAL(20,8)"`
	ExchangeOutMaxLevel2 string    `json:"exchange_out_max_level2" xorm:"not null default 0.00000000 DECIMAL(20,8)"`
	ExchangeOutMaxLevel1 string    `json:"exchange_out_max_level1" xorm:"not null default 0.00000000 DECIMAL(20,8)"`
	ExchangeVerifyLimit  string    `json:"exchange_verify_limit" xorm:"not null default 0.00000000 DECIMAL(20,8)"`
	ExchangeConfirm      int       `json:"exchange_confirm" xorm:"not null default 0 MEDIUMINT(6)"`
	ExchangeRate         string    `json:"exchange_rate" xorm:"not null default 0.0000 DECIMAL(10,4)"`
	ExchangeFeeMin       string    `json:"exchange_fee_min" xorm:"not null default 0.00000000 DECIMAL(20,8)"`
	ExchangeOutEnable    string    `json:"exchange_out_enable" xorm:"not null default '1' ENUM('0','1')"`
	ExchangeInEnable     string    `json:"exchange_in_enable" xorm:"not null default '1' ENUM('0','1')"`
	Sort                 int       `json:"sort" xorm:"not null default 0 MEDIUMINT(6)"`
	CreateTime           time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime           time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type CoinPair struct {
	Id             int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Name           string    `json:"name" xorm:"not null VARCHAR(24)"`
	CoinFrom       string    `json:"coin_from" xorm:"not null VARCHAR(24)"`
	CoinTo         string    `json:"coin_to" xorm:"not null VARCHAR(24)"`
	DisplayFrom    string    `json:"display_from" xorm:"not null VARCHAR(24)"`
	DisplayTo      string    `json:"display_to" xorm:"not null VARCHAR(24)"`
	TradeBuyRate   string    `json:"trade_buy_rate" xorm:"not null DECIMAL(10,4)"`
	TradeSaleRate  string    `json:"trade_sale_rate" xorm:"not null DECIMAL(10,4)"`
	TradeNumberMin string    `json:"trade_number_min" xorm:"DECIMAL(20,8)"`
	TradeNumberMax string    `json:"trade_number_max" xorm:"default 0.00000000 DECIMAL(20,8)"`
	FloatPrice     int       `json:"float_price" xorm:"not null default 8 TINYINT(2)"`
	FloatNumber    int       `json:"float_number" xorm:"not null default 4 TINYINT(2)"`
	Enabled        string    `json:"enabled" xorm:"default '0' ENUM('0','1')"`
	Sort           int       `json:"sort" xorm:"MEDIUMINT(4)"`
	CreateTime     time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime     time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type CoinVote struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	CoinId     int       `json:"coin_id" xorm:"not null INT(11)"`
	StartTime  int       `json:"start_time" xorm:"not null INT(11)"`
	EndTime    int       `json:"end_time" xorm:"not null INT(11)"`
	Desc       string    `json:"desc" xorm:"not null TEXT"`
	Prize      int       `json:"prize" xorm:"not null default 0 INT(11)"`
	PrizeType  string    `json:"prize_type" xorm:"not null default '' VARCHAR(24)"`
	Expect     int       `json:"expect" xorm:"not null default 0 INT(11)"`
	Vote       int       `json:"vote" xorm:"not null default 0 INT(11)"`
	DetImg     string    `json:"det_img" xorm:"not null default '' VARCHAR(255)"`
	DescImg    string    `json:"desc_img" xorm:"not null default '' VARCHAR(255)"`
	Status     int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type CreditConfig struct {
	Id       int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid      int       `json:"uid" xorm:"not null default 0 unique INT(11)"`
	Quota    string    `json:"quota" xorm:"not null default 2.0000 DECIMAL(20,4)"`
	Created  time.Time `json:"created" xorm:"DATETIME"`
	Createip string    `json:"createip" xorm:"default '0.0.0.0' CHAR(15)"`
	Updated  time.Time `json:"updated" xorm:"DATETIME"`
	Updateip string    `json:"updateip" xorm:"default '0.0.0.0' CHAR(15)"`
}

type Distribute struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(10)"`
	Uid         int       `json:"uid" xorm:"not null default 0 INT(10)"`
	OfficialUid int       `json:"official_uid" xorm:"not null default 0 INT(10)"`
	ActivityId  int       `json:"activity_id" xorm:"not null default 0 INT(10)"`
	LotteryId   int       `json:"lottery_id" xorm:"not null default 0 INT(10)"`
	Number      string    `json:"number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	Coin        string    `json:"coin" xorm:"not null default '' VARCHAR(50)"`
	Status      int       `json:"status" xorm:"not null default 1 index TINYINT(2)"`
	Type        int       `json:"type" xorm:"not null default 0 TINYINT(2)"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type Migrations struct {
	Id        int    `json:"id" xorm:"not null pk autoincr INT(10)"`
	Migration string `json:"migration" xorm:"not null VARCHAR(255)"`
	Batch     int    `json:"batch" xorm:"not null INT(11)"`
}

type OfficialAnnouncement struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Title      string    `json:"title" xorm:"not null VARCHAR(64)"`
	Url        string    `json:"url" xorm:"not null VARCHAR(255)"`
	Content    string    `json:"content" xorm:"VARCHAR(500)"`
	Language   int       `json:"language" xorm:"not null default 1 TINYINT(2)"`
	Sort       int       `json:"sort" xorm:"default 0 SMALLINT(5)"`
	IsNew      string    `json:"is_new" xorm:"default '1' ENUM('0','1')"`
	IsDeleted  string    `json:"is_deleted" xorm:"default '0' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type OrderCoin struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	BuyTrustId  int       `json:"buy_trust_id" xorm:"not null index INT(11)"`
	BuyUid      int       `json:"buy_uid" xorm:"not null INT(11)"`
	SaleTrustId int       `json:"sale_trust_id" xorm:"not null index INT(11)"`
	SaleUid     int       `json:"sale_uid" xorm:"not null INT(11)"`
	CoinFrom    string    `json:"coin_from" xorm:"not null index(Index_order_coin_ctime) VARCHAR(12)"`
	CoinTo      string    `json:"coin_to" xorm:"not null index(Index_order_coin_ctime) VARCHAR(12)"`
	Price       string    `json:"price" xorm:"not null DECIMAL(40,16)"`
	Number      string    `json:"number" xorm:"not null DECIMAL(40,16)"`
	CreateTime  int       `json:"create_time" xorm:"not null index(Index_order_coin_ctime) INT(11)"`
	UpdateTime  time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type OrderCoinFinance struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	OrderCoinId int       `json:"order_coin_id" xorm:"not null INT(10)"`
	UidFrom     int       `json:"uid_from" xorm:"not null INT(10)"`
	UidTo       int       `json:"uid_to" xorm:"not null INT(10)"`
	CoinFrom    string    `json:"coin_from" xorm:"not null VARCHAR(16)"`
	CoinTo      string    `json:"coin_to" xorm:"not null VARCHAR(16)"`
	TaxCoin     string    `json:"tax_coin" xorm:"not null default 'rmb' VARCHAR(16)"`
	TaxNumber   string    `json:"tax_number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	Flag        int       `json:"flag" xorm:"not null default 0 TINYINT(4)"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type OteLog struct {
	Id              int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	ActiveTrustId   int       `json:"active_trust_id" xorm:"not null default 0 INT(10)"`
	ActiveUid       int       `json:"active_uid" xorm:"not null default 0 INT(10)"`
	ActiveTrustType string    `json:"active_trust_type" xorm:"not null default '' VARCHAR(8)"`
	IsRedisSuccess  int       `json:"is_redis_success" xorm:"not null default 0 TINYINT(1)"`
	IsDbSuccess     int       `json:"is_db_success" xorm:"not null default 0 TINYINT(1)"`
	ResultContent   string    `json:"result_content" xorm:"not null TEXT"`
	Checked         int       `json:"checked" xorm:"not null default 0 TINYINT(1)"`
	ErrorCode       int       `json:"error_code" xorm:"not null default 0 index TINYINT(1)"`
	ErrorMsg        string    `json:"error_msg" xorm:"not null VARCHAR(255)"`
	CreateTime      int       `json:"create_time" xorm:"not null default 0 INT(10)"`
	UpdateTime      time.Time `json:"update_time" xorm:"not null TIMESTAMP"`
}

type Role struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	RoleName   string    `json:"role_name" xorm:"not null VARCHAR(24)"`
	RoleTitle  string    `json:"role_title" xorm:"not null VARCHAR(24)"`
	Enabled    string    `json:"enabled" xorm:"not null default '1' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type SafetyIpTable struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Ip         string    `json:"ip" xorm:"not null CHAR(15)"`
	Type       string    `json:"type" xorm:"not null default 'black' ENUM('black','white')"`
	Operator   string    `json:"operator" xorm:"VARCHAR(24)"`
	OperateIp  string    `json:"operate_ip" xorm:"CHAR(15)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type SmsAreaCode struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	IsoCode     string    `json:"iso_code" xorm:"VARCHAR(12)"`
	CountryName string    `json:"country_name" xorm:"VARCHAR(128)"`
	CountryCode string    `json:"country_code" xorm:"VARCHAR(12)"`
	Enabled     string    `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type SystemConfig struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Type       string    `json:"type" xorm:"default 'normal' ENUM('account','exchange','normal','system','trade')"`
	Key        string    `json:"key" xorm:"not null VARCHAR(48)"`
	Title      string    `json:"title" xorm:"VARCHAR(48)"`
	Value      string    `json:"value" xorm:"not null VARCHAR(255)"`
	Enabled    string    `json:"enabled" xorm:"not null default '0' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type TrustCoin struct {
	Id              int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid             int       `json:"uid" xorm:"not null index(index) INT(11)"`
	Flag            string    `json:"flag" xorm:"not null ENUM('buy','sale')"`
	CoinFrom        string    `json:"coin_from" xorm:"not null index(index) VARCHAR(12)"`
	CoinTo          string    `json:"coin_to" xorm:"not null index(index) VARCHAR(12)"`
	Number          string    `json:"number" xorm:"not null DECIMAL(20,10)"`
	NumberAvailable string    `json:"number_available" xorm:"not null DECIMAL(20,10)"`
	NumberDeal      string    `json:"number_deal" xorm:"not null default 0.0000000000 DECIMAL(20,10)"`
	Price           string    `json:"price" xorm:"not null DECIMAL(20,10)"`
	IsNew           string    `json:"is_new" xorm:"not null default '1' ENUM('0','1')"`
	Status          int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	CreateTime      int       `json:"create_time" xorm:"not null INT(11)"`
	UpdateTime      time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type User struct {
	Uid           int       `json:"uid" xorm:"not null pk autoincr INT(11)"`
	Email         string    `json:"email" xorm:"not null VARCHAR(64)"`
	Pid           int       `json:"pid" xorm:"not null default 0 INT(11)"`
	Prefix        string    `json:"prefix" xorm:"not null default '86' CHAR(10)"`
	PwdRand       string    `json:"pwd_rand" xorm:"not null VARCHAR(64)"`
	Password      string    `json:"password" xorm:"not null VARCHAR(64)"`
	TradePassword string    `json:"trade_password" xorm:"VARCHAR(64)"`
	Phone         string    `json:"phone" xorm:"VARCHAR(64)"`
	Platform      int       `json:"platform" xorm:"not null default 1 TINYINT(1)"`
	RegType       string    `json:"reg_type" xorm:"VARCHAR(24)"`
	NoFee         int       `json:"no_fee" xorm:"not null default 0 index TINYINT(1)"`
	Status        int       `json:"status" xorm:"default 1 TINYINT(1)"`
	CreateIp      string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp      string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	CreateTime    time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime    time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserApi struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid         int       `json:"uid" xorm:"index(index_uid_apikey) INT(11)"`
	Title       string    `json:"title" xorm:"VARCHAR(24)"`
	ApiKey      string    `json:"api_key" xorm:"index(index_uid_apikey) VARCHAR(128)"`
	SecretKey   string    `json:"secret_key" xorm:"VARCHAR(255)"`
	LimitStatus int       `json:"limit_status" xorm:"default 0 TINYINT(2)"`
	IpWhiteList string    `json:"ip_white_list" xorm:"VARCHAR(255)"`
	IpBlackList string    `json:"ip_black_list" xorm:"VARCHAR(255)"`
	IsDeleted   string    `json:"is_deleted" xorm:"default '0' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserAssetLog struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"index(t_index) INT(11)"`
	OrderId          int       `json:"order_id" xorm:"not null default 0 index(t_index) INT(10)"`
	Coin             string    `json:"coin" xorm:"not null default '' index(t_index) VARCHAR(50)"`
	AssetNumber      string    `json:"asset_number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	FeeNumber        string    `json:"fee_number" xorm:"default 0.0000000000000000 DECIMAL(40,16)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	Type             string    `json:"type" xorm:"default '' index(t_index) VARCHAR(24)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoin777 struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinBch struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinBtc struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinDoge struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinEos struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinEtc struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinEth struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinKop struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinLtc struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinOmg struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinQtum struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinTrx struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	Coin             string    `json:"coin" xorm:"not null VARCHAR(24)"`
	Balance          string    `json:"balance" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceAvailable string    `json:"balance_available" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	BalanceLock      string    `json:"balance_lock" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserCoinVote struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null default 0 INT(11)"`
	VoteId     int       `json:"vote_id" xorm:"not null INT(11)"`
	Vote       int       `json:"vote" xorm:"not null default 0 INT(11)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
}

type UserConfig struct {
	Id                 int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid                int       `json:"uid" xorm:"INT(11)"`
	ExchangeEnabled    string    `json:"exchange_enabled" xorm:"not null default '1' ENUM('0','1')"`
	ExchangeLimitDaily string    `json:"exchange_limit_daily" xorm:"DECIMAL(20,12)"`
	ExchangeLimitMonth string    `json:"exchange_limit_month" xorm:"DECIMAL(20,12)"`
	GoogleAuthEnabled  string    `json:"google_auth_enabled" xorm:"not null default '0' ENUM('0','1')"`
	GoogleSecretKey    string    `json:"google_secret_key" xorm:"VARCHAR(64)"`
	GoogleAuthLogin    string    `json:"google_auth_login" xorm:"not null default '0' ENUM('0','1')"`
	GoogleAuthTrust    string    `json:"google_auth_trust" xorm:"not null default '0' ENUM('0','1')"`
	GoogleAuthExchange string    `json:"google_auth_exchange" xorm:"not null default '0' ENUM('0','1')"`
	PhoneAuthEnabled   string    `json:"phone_auth_enabled" xorm:"default '0' ENUM('0','1')"`
	PhoneAuthLogin     string    `json:"phone_auth_login" xorm:"default '0' ENUM('0','1')"`
	PhoneAuthTrust     string    `json:"phone_auth_trust" xorm:"default '0' ENUM('0','1')"`
	PhoneAuthExchange  string    `json:"phone_auth_exchange" xorm:"default '0' ENUM('0','1')"`
	CreateTine         time.Time `json:"create_tine" xorm:"DATETIME"`
	UpdateTime         time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserConfigLog struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"INT(11)"`
	Key        string    `json:"key" xorm:"VARCHAR(255)"`
	From       string    `json:"from" xorm:"VARCHAR(255)"`
	To         string    `json:"to" xorm:"VARCHAR(255)"`
	Operator   string    `json:"operator" xorm:"VARCHAR(24)"`
	OperateIp  string    `json:"operate_ip" xorm:"CHAR(15)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null DATETIME"`
}

type UserExchange struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null index(t_index) INT(11)"`
	Coin       string    `json:"coin" xorm:"not null index(t_index) VARCHAR(10)"`
	Number     string    `json:"number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	FeeNumber  string    `json:"fee_number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	Confirm    int       `json:"confirm" xorm:"not null default 0 INT(10)"`
	OptType    int       `json:"opt_type" xorm:"not null unique(uid_key) TINYINT(1)"`
	Status     int       `json:"status" xorm:"not null default 1 index(t_index) TINYINT(2)"`
	Wallet     string    `json:"wallet" xorm:"not null unique(uid_key) VARCHAR(80)"`
	Txid       string    `json:"txid" xorm:"not null default '' unique(uid_key) VARCHAR(128)"`
	CreateIp   string    `json:"create_ip" xorm:"not null default '0.0.0.0' VARCHAR(15)"`
	UpdateIp   string    `json:"update_ip" xorm:"not null default '0.0.0.0' VARCHAR(15)"`
	CreateTime time.Time `json:"create_time" xorm:"index DATETIME"`
	Bak        string    `json:"bak" xorm:"VARCHAR(255)"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' index(t_index) TIMESTAMP"`
}

type UserFavorite struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null INT(11)"`
	Coin       string    `json:"coin" xorm:"not null VARCHAR(64)"`
	CoinPair   string    `json:"coin_pair" xorm:"not null VARCHAR(64)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserGoogleAuth struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null INT(11)"`
	Secret     string    `json:"secret" xorm:"default '' CHAR(16)"`
	Status     int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"DATETIME"`
	CreateIp   string    `json:"create_ip" xorm:"CHAR(15)"`
}

type UserGrowth struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null unique(uid,task_id,create_time) INT(11)"`
	TaskId     int       `json:"task_id" xorm:"not null unique(uid,task_id,create_time) INT(11)"`
	CreateTime time.Time `json:"create_time" xorm:"not null unique(uid,task_id,create_time) DATETIME"`
	Reward     float32   `json:"reward" xorm:"not null default 0 FLOAT"`
	Status     int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	Coin       string    `json:"coin" xorm:"not null default 'kop' CHAR(32)"`
}

type UserInfo struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid         int       `json:"uid" xorm:"unique INT(11)"`
	FirstName   string    `json:"first_name" xorm:"VARCHAR(64)"`
	LastName    string    `json:"last_name" xorm:"VARCHAR(64)"`
	Idcard      string    `json:"idcard" xorm:"VARCHAR(64)"`
	Sex         string    `json:"sex" xorm:"default '-1' ENUM('-1','0','1')"`
	Country     string    `json:"country" xorm:"VARCHAR(64)"`
	BirthDay    string    `json:"birth_day" xorm:"VARCHAR(24)"`
	IdcardFront string    `json:"idcard_front" xorm:"VARCHAR(64)"`
	IdcardBack  string    `json:"idcard_back" xorm:"VARCHAR(64)"`
	IdcardHold  string    `json:"idcard_hold" xorm:"VARCHAR(64)"`
	Status      int       `json:"status" xorm:"default 0 TINYINT(1)"`
	FaildReason string    `json:"faild_reason" xorm:"VARCHAR(255)"`
	AuthLevel   int       `json:"auth_level" xorm:"default 1 TINYINT(1)"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserInvite struct {
	Id      int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Fuid    int       `json:"fuid" xorm:"not null INT(11)"`
	Tuid    int       `json:"tuid" xorm:"not null INT(11)"`
	Name    string    `json:"name" xorm:"not null default '' VARCHAR(64)"`
	Created time.Time `json:"created" xorm:"not null DATETIME"`
}

type UserInviteCode struct {
	Id     int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid    int    `json:"uid" xorm:"not null INT(11)"`
	Status int    `json:"status" xorm:"not null INT(11)"`
	Code   string `json:"code" xorm:"not null default '' unique CHAR(8)"`
}

type UserLogin struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null index INT(11)"`
	Token      string    `json:"token" xorm:"VARCHAR(64)"`
	LoginTime  time.Time `json:"login_time" xorm:"not null DATETIME"`
	LogoutTime time.Time `json:"logout_time" xorm:"DATETIME"`
	OnlineTime int       `json:"online_time" xorm:"not null default 0 INT(10)"`
	Ip         string    `json:"ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	Address    string    `json:"address" xorm:"not null default '' CHAR(200)"`
	LoginDay   int       `json:"login_day" xorm:"not null default 1 INT(10)"`
}

type UserNotice struct {
	Id               int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid              int       `json:"uid" xorm:"not null unique INT(11)"`
	LoginAbnormal    string    `json:"login_abnormal" xorm:"not null default '1' ENUM('0','1')"`
	ExchangeAbnormal string    `json:"exchange_abnormal" xorm:"not null default '1' ENUM('0','1')"`
	LoginLock        string    `json:"login_lock" xorm:"not null default '1' ENUM('0','1')"`
	CreateTime       time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime       time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserRole struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null unique(asset_index) INT(11)"`
	RoleId     string    `json:"role_id" xorm:"not null unique(asset_index) VARCHAR(10)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserTask struct {
	Id           int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Title        string    `json:"title" xorm:"default '' VARCHAR(64)"`
	CnName       string    `json:"cn_name" xorm:"not null default '' VARCHAR(64)"`
	EnName       string    `json:"en_name" xorm:"not null default '' VARCHAR(64)"`
	TwName       string    `json:"tw_name" xorm:"not null default '' VARCHAR(64)"`
	Image        string    `json:"image" xorm:"not null default '' CHAR(32)"`
	Status       int       `json:"status" xorm:"not null default 1 TINYINT(1)"`
	Coin         string    `json:"coin" xorm:"not null default 'kop' CHAR(12)"`
	RewardNumber float32   `json:"reward_number" xorm:"not null default 0 FLOAT"`
	Sort         int       `json:"sort" xorm:"not null default 0 SMALLINT(1)"`
	IsShow       int       `json:"is_show" xorm:"not null default 1 TINYINT(1)"`
	StartDate    time.Time `json:"start_date" xorm:"not null DATETIME"`
	EndDate      time.Time `json:"end_date" xorm:"not null DATETIME"`
	CreateDate   time.Time `json:"create_date" xorm:"not null DATETIME"`
}

type UserTransfer struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(10)"`
	FromUid    int       `json:"from_uid" xorm:"not null default 0 index(t_index) INT(10)"`
	ToUid      int       `json:"to_uid" xorm:"not null default 0 index(t_index) INT(10)"`
	Number     string    `json:"number" xorm:"not null default 0.0000000000000000 DECIMAL(40,16)"`
	Coin       string    `json:"coin" xorm:"not null default '' index(t_index) VARCHAR(50)"`
	Bak        string    `json:"bak" xorm:"default '' VARCHAR(200)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' DATETIME"`
}

type WalletAddress struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid         int       `json:"uid" xorm:"index(t_index) INT(11)"`
	OptType     int       `json:"opt_type" xorm:"not null default 1 index(t_index) TINYINT(2)"`
	Coin        string    `json:"coin" xorm:"not null index(t_index) VARCHAR(12)"`
	Address     string    `json:"address" xorm:"not null index(t_index) VARCHAR(128)"`
	AddressName string    `json:"address_name" xorm:"not null default '' VARCHAR(100)"`
	IsDeleted   string    `json:"is_deleted" xorm:"not null default '0' index(t_index) ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}
